"""
des: 类中使用的部分魔法方法
author: Mr_52Hz
date: 2019-07-22
"""
from utils.test_tools import test_decorator


class Apple(object):

    def __init__(self, color, price):
        self.color = color
        self.price = price
        self.__big = 0

    @property
    def big(self):
        return self.__big

    @big.setter
    def big(self, n):
        self.__big = n

    def __str__(self):
        # 定义用于str()方法调用的魔法方法 -- 用户友好的显示 -- 同时str()被print采用
        return 'str msg --> apple color is {0.color}, price is {0.price}'.format(self)

    def __repr__(self):
        # 定义用于repr()方法调用的魔法方法 -- python解释器友好 -- 可以通过eval确定对象
        return 'repr msg --> apple color is {0.color}, price is {0.price}'.format(self)


@test_decorator('class-__str__ __repr__')
def test_class_str_repr():
    apple = Apple('red', 15)
    # print默认调用str()
    # print(str(apple))
    print(apple)
    # 调用repr方法
    a_repr = repr(apple)
    print(a_repr)


if __name__ == '__main__':
    test_class_str_repr()

